#ifndef __MAP_H__
#define __MAP_H__

#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

// 二维码节点结构体
typedef struct {
    int id;         // 当前二维码ID
    int up;         // 上方邻居ID（没有则为0）
    int down;       // 下方邻居ID（没有则为0）
    int left;       // 左侧邻居ID（没有则为0）
    int right;      // 右侧邻居ID（没有则为0）
} QRNode_t;

// 3x3二维码地图数组（ID 1~9）
extern const QRNode_t g_qr_map[9];

// 验证二维码ID是否有效
bool IsValidQRID(int id);

// 验证两个二维码是否相邻
bool AreNeighbors(int id1, int id2);

// 获取二维码的邻居数量
int GetNeighborCount(int id);

// 路径规划：返回从start_id到end_id的下一步二维码ID（无路径返回0）
int Map_NextStepToTarget(int start_id, int end_id);

// 新增：获取完整路径（用于调试和验证）
int Map_GetFullPath(int start_id, int end_id, int* path, int max_path_len);

// 新增：路径验证函数
bool Map_ValidatePath(int* path, int path_len);

// 新增：获取备选路径（当主路径失败时）
int Map_GetAlternativePath(int start_id, int end_id, int failed_next_id);

#ifdef __cplusplus
}
#endif

#endif // __MAP_H__ 